import * as types from '../types'
import {login} from '../../api/login'
// import {wxLogin} from '../../api/login'
import {setToken,setUserInfo} from "../../cookie";
// import {register} from '../../api/register'
// import {pawLogin} from '../../api/login'

const user = {
    state: {
        loginToken: null,
        userId:null,
        userName: null,
        avatar: null,
        mobile:null
    },
    mutations: {
        [types.UPDATE_USER_MOBILE](state,mobile){
          state.mobile=mobile
        },
        [types.UPDATE_USER_INFO](state, userInfo) {
            state.userName = userInfo.userName
            state.avatar = userInfo.avatar
            state.userId = userInfo.userId
        },
        [types.UPDATE_LOGIN_TOKEN](state, loginToken) {
            state.loginToken = loginToken;
        }
    },
    actions: {
        login({commit},{mobile,code}){
            return new Promise((resolve, reject) => {
                login(mobile,code).then(res=>{
                    let token = res.data.token
                    setToken(token)
                    setUserInfo({mobile})
                    //登录成功更新
                    commit(types.UPDATE_LOGIN_TOKEN,token)
                    commit(types.UPDATE_USER_MOBILE,mobile)
                    resolve()
                }).catch(error=>{
                    reject(error)
                })
            })
        },
        //申明是异步函数 这样能await或者then执行同步调用
        // wxLogin({commit}, {code, parentId}) {
        //
        //     return new Promise((resolve, reject) => {
        //         wxLogin(code, parentId).then(res => {
        //                 let loginToken = res.data.token
        //                 let userId = res.data.userId
        //                 let name = res.extra.wxUser.nickName
        //                 let avatar = res.extra.wxUser.headImgUrl
        //                 //更新用户基本信息
        //                 commit(types.UPDATE_USER_INFO, {
        //                     userName: name,
        //                     avatar: avatar,
        //                     userId:userId
        //                 })
        //                 //更新TOKEN
        //                 setToken(loginToken)
        //                 commit(types.UPDATE_LOGIN_TOKEN, loginToken)
        //                 resolve()
        //             }
        //         ).catch(error => {
        //             reject(error)
        //         })
        //     })
        //
        //
        // },
        // login({dispatch,commit}, {account, password, uuid, captcha}) {
        //     return new Promise((resolve, reject) => {
        //         pawLogin({account, password, uuid, captcha}).then(res => {
        //             let loginToken = res.data.token
        //             let userId = res.data.userId
        //             let name = res.extra.userName;
        //
        //             commit(types.UPDATE_USER_INFO, {
        //                 userName: name,
        //                 avatar: null,
        //                 userId:userId
        //             })
        //             setToken(loginToken)
        //             commit(types.UPDATE_LOGIN_TOKEN, loginToken)
        //             //启动IM
        //             dispatch('initIm',{userId}, {root: true})
        //             resolve()
        //         }).catch(error => {
        //             reject(error)
        //         })
        //     })
        // },
        // register({dispatch,commit}, {name, password, phone, uuid, captcha}) {
        //     return new Promise((resolve, reject) => {
        //         register({name, password, phone, uuid, captcha}).then(res => {
        //             let loginToken = res.data.token
        //             let name = res.extra.userName;
        //             let userId = res.data.userId
        //             commit(types.UPDATE_USER_INFO, {
        //                 userName: name,
        //                 avatar: null,
        //                 userId:userId
        //             })
        //             setToken(loginToken)
        //             commit(types.UPDATE_LOGIN_TOKEN, loginToken)
        //             //启动IM
        //             dispatch('initIm',{userId}, {root: true})
        //             resolve()
        //         }).catch(error => {
        //             reject(error)
        //         })
        //     })
        // },
        outLogin({commit}) {
            return new Promise(resolve => {
                setToken(null)
                commit(types.UPDATE_LOGIN_TOKEN, null)
                resolve()
            })
        }
    },
    getters: {
        mobile:(state)=>state.mobile,
        loginToken:(state)=>state.loginToken
    }
}

export default user
